package com.yy.wga.mp.module.pay.request.third;

import com.alibaba.fastjson.annotation.JSONField;
import com.yy.wga.mp.module.pay.common.eunms.EAliPayTradeStatus;
import lombok.Data;

import java.util.Date;

/**
 * 支付宝支付参数
 * https://opendocs.alipay.com/open/204/105301
 */
@Data
public class AliPayPayNotifyRequest {

    /**
     * 	通知的类型
     */
    @JSONField(name = "notify_type")
    private String notifyType;
    /**
     * 通知时间
     */
    @JSONField(name = "notify_time", format = "yyyy-MM-dd HH:mm:ss")
    private Date notifyTime;

    /**
     * 支付宝分配给开发者的应用Id
     */
    @JSONField(name = "app_id")
    private String appId;

    /**
     * 编码格式，如utf-8、gbk、gb2312 等
     */
    private String charset;

    /**
     * 接口版本
     */
    private String version;

    /**
     * 	商户生成签名字符串所使用的签名算法类型，目前支持 RSA2 和 RSA，推荐使用 RSA2
     */
    @JSONField(name = "sign_type")
    private String signType;

    /**
     * 	签名
     */
    private String sign;

    /**
     * 支付宝交易号
     */
    @JSONField(name = "trade_no")
    private String tradeNo;

    /**
     * 商户订单号
     */
    @JSONField(name = "out_trade_no")
    private String outTradeNo;

    /**
     * 	商户业务 ID，主要是退款通知中返回退款申请的流水号
     */
    @JSONField(name = "out_biz_no")
    private String outBizNo;

    /**
     * 	买家支付宝用户号
     */
    @JSONField(name = "buyer_id")
    private String buyerId;

    /**
     * 	买家支付宝用户号
     */
    @JSONField(name = "buyer_logon_id")
    private String buyerLogonId;

    /**
     * 	卖家支付宝用户号
     */
    @JSONField(name = "seller_id")
    private String sellerId;

    /**
     * 	卖家支付宝账号
     */
    @JSONField(name = "seller_email")
    private String sellerEmail;

    /**
     * 交易状态
     */
    @JSONField(name = "trade_status")
    private EAliPayTradeStatus tradeStatus;
    /**
     * 订单总金额。单位为元，精确到小数点后两位
     */
    @JSONField(name = "total_amount")
    private String totalAmount;
    /**
     * 实收金额
     */
    @JSONField(name = "receipt_amount")
    private String receiptAmount;
    /**
     * 开票金额
     */
    @JSONField(name = "invoice_amount")
    private String invoiceAmount;
    /**
     * 付款金额
     */
    @JSONField(name = "buyer_pay_amount")
    private String buyerPayAmount;
    /**
     * 集分宝金额
     */
    @JSONField(name = "point_amount")
    private String pointAmount;
    /**
     * 总退款金额
     */
    @JSONField(name = "refund_fee")
    private String refundFee;
    /**
     * 订单标题
     */
    private String subject;
    /**
     * 商品描述
     */
    private String body;

    /**
     * 交易创建时间
     */
    @JSONField(name = "gmt_create", format = "yyyy-MM-dd HH:mm:ss")
    private Date gmtCreate;

    /**
     * 交易付款时间
     */
    @JSONField(name = "gmt_payment", format = "yyyy-MM-dd HH:mm:ss")
    private Date gmtPayment;

    /**
     * 交易退款时间
     */
    @JSONField(name = "gmt_refund", format = "yyyy-MM-dd HH:mm:ss")
    private Date gmtRefund;

    /**
     * 交易结束时间
     */
    @JSONField(name = "gmt_close", format = "yyyy-MM-dd HH:mm:ss")
    private Date gmtClose;

    /**
     * 支付金额信息
     */
    @JSONField(name = "fund_bill_list")
    private String fundBillList;
    /**
     * 回传参数
     */
    @JSONField(name = "passback_params")
    private String passbackParams;
    /**
     * 优惠券信息
     */
    @JSONField(name = "voucher_detail_list")
    private String voucherDetailList;
}
